import org.junit.Test;

import java.util.Arrays;

/**
 * 数组   Array
 * 数组相当于一堆相同数据类型的数据
 */
public class 数组 {
    //1.数组定义：4中，创建数组初始化【静态初始化：给定值|动态初始化：不给定值】
    @Test
    public void testArray(){
        //注意：数组长度固定，不能改变
        int[] arr1=new int[4];   //java推荐写法   动态初始化
        int arr2[]=new int[4];//C推荐写法java兼容 动态初始化
        int[] arr3={1,2,3};//静态初始化数组，元素可以直接使用
        int[] arr4=new int[]{1,2,3};//动态初始化
        //数组：内部存数据叫元素？
        //从arrr3取出2的元素   数组名 下标
        System.out.println(arr3[1]);
        //从arr3的长度
        System.out.println(arr3.length);
        //从arr4获取到第四个元素值     数组下标越界异常：下标超出数组长度范围
      //  System.out.println(arr4[4]);//报错 ArrayIndexOutOfBoundsException:4
    }
/**
 * 数组的迭代（遍历：输出数组所有元素值）三种
 * 1.普通迭代方式：for
 * 2.增强for方式：推荐：JDK1.5之后
 * 3.工具类：Arrays
 *
 */
@Test
    public void testIterate(){
    int[] arr={1,2,3,4};//静态初始化数组     数组名[下标]
  //  for(int i=0;i< arr.length;i++){//拿数组下标
   // System.out.println(arr[i]);
//    }
    //增强for jdk1.5   遍历数组目的：拿元素值
    for (int j:arr){//增强for语法：（遍历数据类型  引用：数组名）
        System.out.println(j);
    }
    //工具类：Arrays.toString()直接打印数组元素值
    System.out.println(Arrays.toString(arr));


}
/**
 *
 */
 @Test
    public void testCopy(){
     //字符数组，数组长度固定：2个
     char[] arr={'唐','山'};   //想法：长度增加为4
     //扩容：增加4个      克隆新的数组
     char[] temp=Arrays.copyOf(arr,4);
     arr=temp;
     System.out.println(arr);
     //需求：输出唐山工业

 }
/**
 * 数组输出元素值，会有一些不同，【查看数据是否是数组】
 * 啊数据类型：基础数据类型+引用类型
 */
@Test
    public void testArrays(){
    //字符数组
    char[] china={'中','国'};
    System.out.println(china);//输出：中国    字符串：字符数组
    //输出语句--javaOOP面向对象：重载，字符数组自动拼接
    //数值数组
    int[] i={1,2};
    System.out.println(i);//输出:[I 数据类型；  @ 连接符 1a93a7ca 地址值
}
/**
 * 冒号排序：双层for循环的使用：外层for执行一次，执行全部
 */
@Test
    public void bubbleSort(){
    //静态初始化数组
    int[] arr={3,6,4,1};  //升序输出：1,3,4,6
    //①外层for控制论  i=0 1 2     3轮
    for (int i=0;i<arr.length-1;i++){
        //②内层for控制次  j=3轮递减-[3~1]次    递减-1次
        for (int j=0;j<arr.length-1-i;j++){
            //③交换：第一个元素比第二个元素大，条件成立：交换【升序】
            if (arr[j]>arr[j+1]){//【相邻元素】  数组名[下标]
                //创建第三方数组，接收    变量名：temp
                int temp=arr[j];   //大的元素交给第三方变量保存
                arr[j]=arr[j+1];   //第二个元素换给第一个元素位置
                arr[j+1]=temp;     //保存的第三方变量【大数】交给第二个元素
            }
        }
    }
    System.out.println(Arrays.toString(arr));  //输出数组【遍历数组】
}
@Test
    public void testSort(){
    int[] arr={3,6,4,1};
    //工具类 Arrays.sort() 方法排序，默认升序
    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr));
}

}
